home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / music / fft4wav3.zip / ENGLISH.EXE / FFT4WAVE.HLP next >
Text File  |  1994-10-20  |  53KB  |  1,270 lines

  1. #38  WAV/VOC/SND/IFF/AU/RAW  8bit laden
  2.  
  3. searching for WAV/VOC/SND/IFF/AU/RAW/SAM/MAT files (Maximum 4096).
  4. select one File out of the scrollmenu, this file is shown on the SCREEN,
  5. and you can select the starting-point for loading with the mouse:
  6.  
  7.                 Esc:  Escape   
  8. Tab, right Mousekey:  switch between signed/unsigned Mode.
  9.       left Mousekey:  loading file at starting-point.
  10.  
  11. FFT4WAVE knows only the Headertype of WAV-files, used WAV-header-Information:
  12. Samplerate,  8bit_unsigned / 16bit_signed, Stereo/Mono.
  13.   Stereo WAV-files are loading as   Real & Imag.  DATA,
  14. and MONO WAV-files (default) are loading as reell DATA.
  15. FFT4WAVE read only so many DATA as defined in the FFT4WAVE.INI file!
  16. VOC/SND/IFF/AU/RAW/SAM/MAT files are loading as mono 8bit unsigned,
  17. with the Samplerate (11000) defined in the FFT4WAVE.INI file.
  18.  
  19. #39  WAV/VOC/SND/IFF/AU/RAW 16bit laden
  20.  
  21. searching for WAV/VOC/SND/IFF/AU/RAW/SAM/MAT files (Maximum 4096).
  22. select one File out of the scrollmenu, this file is shown on the SCREEN,
  23. and you can select the starting-point for loading with the mouse:
  24.  
  25.                 Esc:  Escape   
  26. Tab, right Mousekey:  switch between signed/unsigned Mode.
  27.       left Mousekey:  loading file at starting-point.
  28.  
  29. FFT4WAVE knows only the Headertype of WAV-files, used WAV-header-Information:
  30. Samplerate,  8bit_unsigned / 16bit_signed, Stereo/Mono.
  31.   Stereo WAV-files are loading as   Real & Imag.  DATA,
  32. and MONO WAV-files (default) are loading as reell DATA.
  33. FFT4WAVE read only so many DATA as defined in the FFT4WAVE.INI file!
  34. VOC/SND/IFF/AU/RAW/SAM/MAT files are loading as mono 16bit signed,
  35. with the Samplerate (11000) defined in the FFT4WAVE.INI file.
  36.  
  37. #11  WAV-Datei Aufnahme mit 11kHz
  38.  
  39. Functionnumber 1...19 used for adding of extern programs to the MENU!
  40.  
  41. 1.....9  exit FFT4WAVE   without save DATA.
  42. 10...19  save all DATA, then exit FFT4WAVE.
  43.  
  44. FFT4WAVE give DOS the functionnumber as ERRORLEVEL back.
  45. the ERRORLEVEL is usefull in the START.BAT file,
  46. to select the extern program, and start it over the START.BAT file.
  47.  
  48. Functionnumber 11 start an external program:     RWAVE fft.wav 11000
  49. this program record the "FFT.WAV" file, with the Samplerate of 11000 1/s.
  50.  
  51. #12  WAV-Datei Aufnahme mit 22kHz
  52.  
  53. Functionnumber 1...19 used for adding of extern programs to the MENU!
  54.  
  55. 1.....9  exit FFT4WAVE   without save DATA.
  56. 10...19  save all DATA, then exit FFT4WAVE.
  57.  
  58. FFT4WAVE give DOS the functionnumber as ERRORLEVEL back.
  59. the ERRORLEVEL is usefull in the START.BAT file,
  60. to select the extern program, and start it over the START.BAT file.
  61.  
  62. Functionnumber 12 start an external program:     RWAVE fft.wav 22000
  63. this program record the "FFT.WAV" file, with the Samplerate of 22000 1/s.
  64.  
  65. #13  WAV-Datei Aufnahme mit 44kHz
  66.  
  67. Functionnumber 1...19 used for adding of extern programs to the MENU!
  68.  
  69. 1.....9  exit FFT4WAVE   without save DATA.
  70. 10...19  save all DATA, then exit FFT4WAVE.
  71.  
  72. FFT4WAVE give DOS the functionnumber as ERRORLEVEL back.
  73. the ERRORLEVEL is usefull in the START.BAT file,
  74. to select the extern program, and start it over the START.BAT file.
  75.  
  76. Functionnumber 13 start an external program:     RWAVE fft.wav 44000
  77. this program record the "FFT.WAV" file, with the Samplerate of 44000 1/s.
  78.  
  79. #8  Formeln...
  80.  
  81.     extern added Formula-Interpreter / Functionsgenerator
  82. --------------------------------------------------------------
  83. give an equation like 'y=5*sin(x)-1+abs(x)*x' or 'y=rect(t)+t'
  84. (let the "y=" away!) and You get the DATA from the formula...
  85.  
  86. the DATA exist in the FFT typical form, with Zero in X-direction at
  87. the left and right border, if for "Xmin" given a negative number!
  88. (you can change this with Zero_swapping_shifting_X)
  89.  
  90. Variables & Constants:
  91. -----------------------
  92. t = x           
  93. e = 2.718281828
  94. p = 3.141592654 = π
  95. m = 6.283185307 = 2π
  96. q = 9.869604401 = π²
  97. l = 0.693147181 = ln(2) 
  98. w = 1.414213562 = √2
  99. v = 0.707106781 = 1/√2
  100. d = 1.732050808 = √3
  101.  
  102. Functions:
  103. -----------
  104.    sin()     cos()     tan()
  105. Arcsin()  Arccos()  Arctan()
  106. Si()      <== Si(x)=sin(x)/x 
  107. ln()      <== Logarithmus to Basis e
  108. log()     <== Logarithmus to Basis 10
  109. Wurzel()  <== squareroot...
  110. abs()     <== abs(x>0)=x,  abs(x<0)=-x
  111. sgn()     <== sgn(<0)=-1   sgn(0)=0   sgn(>0)=1
  112. Sprung()  <== Sprung(>=0)=1        Sprung(<0)=0
  113. clip()    <== clip(<-1)=-1   clip(x)=x   clip(>1)=1
  114. noise(x)  <== randomnumber, range -x ... x
  115. data(x)   <== randomnumber, range 0,1,2,3,4...x
  116. rect()    <== rect(-0.5<x<0.5)=1               else 0
  117. dreieck() <== dreieck(-1<x<1)=1-abs(x)         else 0
  118. ramp()    <== ramp(-1<x<1)=0.5*x+0.5           else 0
  119. Hanning() <== Hanning(-1<x<1)=0.5+0.5cos(π*x)  else 0
  120. diracs()  <== diracs(x=int(x)) = (1)           else 0
  121. dirac()   <== dirac( x = 0 )   = (1)           else 0
  122. exp()     <== exp(0<x) = e^(-ln(2)*x )         else 0
  123. gauss(x)  <==            e^(-ln(2)*x²)
  124.  
  125. the exact programming of some definate formulas is different,
  126. to make the formula work perfect under all conditions!
  127.  
  128. the following Operators exist:
  129. ------------------------------
  130.  +   Addition
  131.  -   Subtraction
  132.  *   Multiplication
  133.  /   Divison
  134.  ^   Power
  135.  #   Folding   (I know '*' is exactly the Folding-Operator,
  136.                 and not stands for Multiplication, but IBM don't know that...)
  137.  
  138. Der Foldingoperator '#' is illegal inside of '('  ')'.
  139. (but more than one Foldingoperator inside an equation is okay!)
  140. the Foldingoperator '#' split the equation in some smaller equations,
  141. calculate the smaller equations, and folding them together with
  142. the FFT-folding (FFT of splitted DATA, multiply, inverseFFT).
  143.  
  144. I'am very proud that the Folding work perfect under all conditions.
  145.  
  146. hierarchy of Operators:      1.level    ( )
  147.                              2.level    + - * / ^
  148.                              3.level    #
  149.  
  150. Operators at the same level are calculated from left to right:
  151. e*t-p^2*sin(t)       is calculated as      [[[e*t]-p]^2]*sin(t)
  152. (e*t)-((p^2)*sin(t))    calculate with the correct mathematics hierarchy...
  153.  
  154. Negative Numbers:  -z  input as  (0-z)
  155.  
  156.   'Esc'  break the Functiongenerator, return to FFT4WAVE!
  157.   'Del'  DATA is shit, input a new formula...
  158.  'Enter' give DATA back to FFT4WAVE (TEMP.FFT) and return to FFT4WAVE.
  159.  
  160. FFT4WAVE loading TEMP.FFT automatic at programstart.
  161.  
  162. #40  alle Daten (.FFT)  laden
  163.  
  164. shows all *.FFT files of the FFT4WAVE directory,
  165. select a file out of the scrollmenu for loading, or press Escape!
  166. *.FFT is the most important file-format of FFT4WAVE,
  167. it inlcude all DATA and all Header-Information.
  168.  
  169.  
  170. the *.FFT DATA-format:
  171. -----------------------
  172. long    Status
  173. long    AnzahlNormal
  174. long    AnzahlReal
  175. long    AnzahlImag
  176. double  Samplerate
  177. double  real[0...AnzahlReal]         //  {real[] Array}
  178. double  imag[0...AnzahlImag]         //  {imag[] Array}
  179.  
  180.  
  181.  
  182. Status:  bit0 =  (Stereo)        reell / complex DATA
  183.          bit1 = (FFTflag)    time_area / frequency_area
  184.          bit2 =  (Nykill)  transformed reell DATA
  185.          following combinations make sense:
  186. Status= 0     Reell DATA in time_area
  187. Status= 1   complex DATA in time_area
  188. Status= 3   complex DATA in Frequency_area, 0...Samplerate
  189. Status= 7   complex DATA in Frequency_area, 0...Samplerate/2
  190.  
  191. AnzahlNormal is the valid DATAlength:
  192. Komplexen Daten:  AnzahlNormal = the smaller value of {AnzahlReal,AnzahlImag}
  193. Reell DATA:       AnzahlNormal = AnzahlReal + AnzahlImag;
  194.  
  195. Reell DATA is saved alternately in real[] and imag[] array:
  196. real[] = { 0, 2, 4, 6, 8, 10, 12, 14, ...};
  197. imag[] = { 1, 3, 5, 7, 9, 11, 13, 15, ...};
  198. the numbers stand for the order of the reell DATA.
  199.  
  200. #41  alle Daten (.FFT)  speichern
  201.  
  202. shows all *.FFT files of the FFT4WAVE directory,
  203. you must input a new filename for saving,
  204. but you mustn't give the file_exension .FFT
  205. *.FFT is the most important file-format of FFT4WAVE,
  206. it inlcude all DATA and all Header-Information.
  207.  
  208.  
  209. the *.FFT DATA-format:
  210. -----------------------
  211. long    Status
  212. long    AnzahlNormal
  213. long    AnzahlReal
  214. long    AnzahlImag
  215. double  Samplerate
  216. double  real[0...AnzahlReal]         //  {real[] Array}
  217. double  imag[0...AnzahlImag]         //  {imag[] Array}
  218.  
  219.  
  220.  
  221. Status:  bit0 =  (Stereo)        reell / complex DATA
  222.          bit1 = (FFTflag)    time_area / frequency_area
  223.          bit2 =  (Nykill)  transformed reell DATA
  224.          following combinations make sense:
  225. Status= 0     Reell DATA in time_area
  226. Status= 1   complex DATA in time_area
  227. Status= 3   complex DATA in Frequency_area, 0...Samplerate
  228. Status= 7   complex DATA in Frequency_area, 0...Samplerate/2
  229.  
  230. AnzahlNormal is the valid DATAlength:
  231. Komplexen Daten:  AnzahlNormal = the smaller value of {AnzahlReal,AnzahlImag}
  232. Reell DATA:       AnzahlNormal = AnzahlReal + AnzahlImag;
  233.  
  234. Reell DATA is saved alternately in real[] and imag[] array:
  235. real[] = { 0, 2, 4, 6, 8, 10, 12, 14, ...};
  236. imag[] = { 1, 3, 5, 7, 9, 11, 13, 15, ...};
  237. the numbers stand for the order of the reell DATA.
  238.  
  239. #42  Importiere als  Reell
  240.  
  241. Import Headerless Numbers,
  242. in 'Text' , 'Float' or 'Double' Format
  243. as Reell DATA in time_area.
  244.  
  245. Reell DATA are saved alternately in real[] and imag[] array:
  246. real[] = { 0, 2, 4, 6, 8, 10, 12, 14, ...};
  247. imag[] = { 1, 3, 5, 7, 9, 11, 13, 15, ...};
  248. the numbers stand for the order of the reell DATA.
  249. so the memory is used twice efficient as for complex DATA.
  250. it is very easy to transform reell DATA to complex DATA by overloading
  251. the imaginary part with 0    "zero.(f)"
  252.  
  253. first select a Format: (Text, Float, Double), then all files of the chosen
  254. type are in the scrollmenu. select a file for loading as reell DATA.
  255. this is the last change to press 'Esc' for escape to MENU!
  256.  
  257.  
  258.  
  259. Text - Format:   *.(T)
  260. -----------------------
  261. all files with the extension .(T) are Textformat numbers.
  262. every text-line include one number in ASCII-text format!
  263. (after the number can stand a remark)
  264. the following characters are part of a ASCII-text-number:  1234567890. -e
  265. examples:
  266.    24        ;this is a remark
  267.   3.14159  
  268. -0.75
  269.  1.2345e-12  =  1.2345*10^-12 = 0.0000000000000012345  <--remark
  270. -1.7e6       = -1.7000*10^6   = 1700000.0              <--remark
  271. 0
  272. -234567.7578 = remark too
  273.  
  274.  
  275.  
  276. Float - Format:   *.(F)
  277. ------------------------
  278. All files with the extension .(F) are Floatformat numbers,
  279. the Floatformat is a 4 byte long numeric format of the language C.
  280. DATAlength = filelength_in_bytes / 4 
  281.  
  282.  
  283.  
  284. Double - Format:   *.(D)
  285. -------------------------
  286. All files with the extension .(D) are Doubleformat numbers,
  287. the Doubleformat is a 8 byte long numeric format of the language C.
  288. (files with the extension .FFT use double format too, but *.FFT have a Header)
  289. DATAlength = filelength_in_bytes / 8
  290.  
  291. #43  Importiere als  Real
  292.  
  293. Import Headerless Numbers,
  294. in 'Text' , 'Float' or 'Double' Format
  295. as realpart of complex DATA in time_area.
  296. the imaginarypart don't change...
  297.  
  298. It happens often, that realpart and imaginarypart have different length,
  299. it is even possible to save this fully in a  *.FFT file!
  300. some functions need that DATA of both realpart & imaginarypart exist, like:
  301. Hanning Window, FFT, X-Scaling, Y-Scaling, Polar -> real & imag,  
  302. Zero_swapping_shifting_X, Absolute ERROR, complex Folding.
  303. In this case the shorter length is used as valid DATAlength, this length is
  304. shown in Status-Information and used for visualize the DATA.
  305. some functions must correct different length to the shorter length, like:
  306. FFT, X-Scaling, Y-Scaling, Absolute ERROR, and the complexe Folding.
  307.  
  308. use of dynamic different DATAlength of realpart & imaginarypart:
  309.  
  310. fill      Realpart mit  800 values
  311. fill Imaginarypart mit 1024 values   /valid DATAlength=800
  312. fill Imaginarypart mit  512 values   /valid DATAlength=512
  313. fill      Realpart mit 8192 values   /valid DATAlength=512
  314. fill Imaginarypart mit 9000 values   /valid DATAlength=8192
  315.  
  316.  
  317. first select a Format: (Text, Float, Double), then all files of the chosen type
  318. in the FFT4WAVE directory are in the scrollmenu. select one file for loading.
  319. this is the last change to press 'Esc' for escape to MENU!
  320.  
  321.  
  322.  
  323. Text - Format:   *.(T)
  324. -----------------------
  325. all files with the extension .(T) are Textformat numbers.
  326. every text-line include one number in ASCII-text format!
  327. (after the number can stand a remark)
  328. the following characters are part of a ASCII-text-number:  1234567890. -e
  329. examples:
  330.    24        ;this is a remark
  331.   3.14159  
  332. -0.75
  333.  1.2345e-12  =  1.2345*10^-12 = 0.0000000000000012345  <--remark
  334. -1.7e6       = -1.7000*10^6   = 1700000.0              <--remark
  335. 0
  336. -234567.7578 = remark too
  337.  
  338.  
  339.  
  340. Float - Format:   *.(F)
  341. ------------------------
  342. All files with the extension .(F) are Floatformat numbers,
  343. the Floatformat is a 4 byte long numeric format of the language C.
  344. DATAlength = filelength_in_bytes / 4 
  345.  
  346.  
  347.  
  348. Double - Format:   *.(D)
  349. -------------------------
  350. All files with the extension .(D) are Doubleformat numbers,
  351. the Doubleformat is a 8 byte long numeric format of the language C.
  352. (files with the extension .FFT use double format too, but *.FFT have a Header)
  353. DATAlength = filelength_in_bytes / 8
  354.  
  355. #44  Importiere als  Imag.
  356.  
  357. Import Headerless Numbers,
  358. in 'Text' , 'Float' or 'Double' Format
  359. as imaginarypart of complex DATA in time_area.
  360. the realpart don't change...
  361.  
  362. It happens often, that realpart and imaginarypart have different length,
  363. it is even possible to save this fully in a  *.FFT file!
  364. some functions need that DATA of both realpart & imaginarypart exist, like:
  365. Hanning Window, FFT, X-Scaling, Y-Scaling, Polar -> real & imag,  
  366. Zero_swapping_shifting_X, Absolute ERROR, complex Folding.
  367. In this case the shorter length is used as valid DATAlength, this length is
  368. shown in Status-Information and used for visualize the DATA.
  369. some functions must correct different length to the shorter length, like:
  370. FFT, X-Scaling, Y-Scaling, Absolute ERROR, and the complexe Folding.
  371.  
  372. use of dynamic different DATAlength of realpart & imaginarypart:
  373.  
  374. fill      Realpart mit  800 values
  375. fill Imaginarypart mit 1024 values   /valid DATAlength=800
  376. fill Imaginarypart mit  512 values   /valid DATAlength=512
  377. fill      Realpart mit 8192 values   /valid DATAlength=512
  378. fill Imaginarypart mit 9000 values   /valid DATAlength=8192
  379.  
  380.  
  381. Tip: it is easy to transform Reell DATA to complexe DATA by import  ZERO.(F)
  382. as imaginarypart. it is also possible to export the Reell DATA, then
  383. importing the exported DATA as realpart, and import ZERO.(F) as imaginarypart.
  384.  
  385. first select a Format: (Text, Float, Double), then all files of the chosen type
  386. in the FFT4WAVE directory are in the scrollmenu. select one file for loading.
  387. this is the last change to press 'Esc' for escape to MENU!
  388.  
  389.  
  390.  
  391. Text - Format:   *.(T)
  392. -----------------------
  393. all files with the extension .(T) are Textformat numbers.
  394. every text-line include one number in ASCII-text format!
  395. (after the number can stand a remark)
  396. the following characters are part of a ASCII-text-number:  1234567890. -e
  397. examples:
  398.    24        ;this is a remark
  399.   3.14159  
  400. -0.75
  401.  1.2345e-12  =  1.2345*10^-12 = 0.0000000000000012345  <--remark
  402. -1.7e6       = -1.7000*10^6   = 1700000.0              <--remark
  403. 0
  404. -234567.7578 = remark too
  405.  
  406.  
  407.  
  408. Float - Format:   *.(F)
  409. ------------------------
  410. All files with the extension .(F) are Floatformat numbers,
  411. the Floatformat is a 4 byte long numeric format of the language C.
  412. DATAlength = filelength_in_bytes / 4 
  413.  
  414.  
  415.  
  416. Double - Format:   *.(D)
  417. -------------------------
  418. All files with the extension .(D) are Doubleformat numbers,
  419. the Doubleformat is a 8 byte long numeric format of the language C.
  420. (files with the extension .FFT use double format too, but *.FFT have a Header)
  421. DATAlength = filelength_in_bytes / 8
  422.  
  423. #45  Importiere als  Real & Imag.
  424.  
  425. Import Headerless Numbers,
  426. in 'Text' , 'Float' or 'Double' Format
  427. as complex DATA in time_area.
  428.  
  429.        0 ... length/2-1               realpart
  430. length/2 ... length-1            imaginarypart
  431.  
  432. the first half is realpart, the second half is imaginarypart.
  433.  
  434. first select a Format: (Text, Float, Double), then all files of the chosen type
  435. in the FFT4WAVE directory are in the scrollmenu. select one file for loading.
  436. this is the last change to press 'Esc' for escape to MENU!
  437.  
  438.  
  439.  
  440. Text - Format:   *.(T)
  441. -----------------------
  442. all files with the extension .(T) are Textformat numbers.
  443. every text-line include one number in ASCII-text format!
  444. (after the number can stand a remark)
  445. the following characters are part of a ASCII-text-number:  1234567890. -e
  446. examples:
  447.    24        ;this is a remark
  448.   3.14159  
  449. -0.75
  450.  1.2345e-12  =  1.2345*10^-12 = 0.0000000000000012345  <--remark
  451. -1.7e6       = -1.7000*10^6   = 1700000.0              <--remark
  452. 0
  453. -234567.7578 = remark too
  454.  
  455.  
  456.  
  457. Float - Format:   *.(F)
  458. ------------------------
  459. All files with the extension .(F) are Floatformat numbers,
  460. the Floatformat is a 4 byte long numeric format of the language C.
  461. DATAlength = filelength_in_bytes / 4 
  462.  
  463.  
  464.  
  465. Double - Format:   *.(D)
  466. -------------------------
  467. All files with the extension .(D) are Doubleformat numbers,
  468. the Doubleformat is a 8 byte long numeric format of the language C.
  469. (files with the extension .FFT use double format too, but *.FFT have a Header)
  470. DATAlength = filelength_in_bytes / 8
  471.  
  472. #46  exportiere     Alles
  473.  
  474. Export (save) all DATA (Reell or complex) as Headerless numbers
  475. in 'Text' , 'Float' or 'Double' Format.
  476. Information like  time_area / frequency_Area, Samplerate, complex/reell,
  477. is not saved, and going lost!   only the raw DATA is saved.
  478.  
  479. if the DATA is complex, Realpart is first saved and then the Imaginarypart,
  480. but only from 0 to DATAlength, so that both parts have the same length!
  481. reell DATA is not saved alternately in two parts...
  482.  
  483. first select a Format: (Text, Float, Double), then all files of the chosen type
  484. in the FFT4WAVE directory are shown, enter a new filename without extension!
  485.  
  486.  
  487.  
  488. Text - Format:   *.(T)
  489. -----------------------
  490. all files with the extension .(T) are Textformat numbers.
  491. every text-line include one number in ASCII-text format!
  492. (after the number can stand a remark)
  493. the following characters are part of a ASCII-text-number:  1234567890. -e
  494. examples:
  495.    24        ;this is a remark
  496.   3.14159  
  497. -0.75
  498.  1.2345e-12  =  1.2345*10^-12 = 0.0000000000000012345  <--remark
  499. -1.7e6       = -1.7000*10^6   = 1700000.0              <--remark
  500. 0
  501. -234567.7578 = remark too
  502.  
  503.  
  504.  
  505. Float - Format:   *.(F)
  506. ------------------------
  507. All files with the extension .(F) are Floatformat numbers,
  508. the Floatformat is a 4 byte long numeric format of the language C.
  509. DATAlength = filelength_in_bytes / 4 
  510.  
  511.  
  512.  
  513. Double - Format:   *.(D)
  514. -------------------------
  515. All files with the extension .(D) are Doubleformat numbers,
  516. the Doubleformat is a 8 byte long numeric format of the language C.
  517. (files with the extension .FFT use double format too, but *.FFT have a Header)
  518. DATAlength = filelength_in_bytes / 8
  519.  
  520. #47  exportiere nur Real
  521.  
  522. Export (save) only the realpart of complex DATA as Headerless numbers
  523. in 'Text' , 'Float' or 'Double' Format.
  524. Information like  time_area / frequency_Area, Samplerate, complex/reell,
  525. is not saved, and going lost!   only the raw DATA is saved.
  526. never use this function on reell DATA.
  527.  
  528. first select a Format: (Text, Float, Double), then all files of the chosen type
  529. in the FFT4WAVE directory are shown, enter a new filename without extension!
  530.  
  531.  
  532.  
  533. Text - Format:   *.(T)
  534. -----------------------
  535. all files with the extension .(T) are Textformat numbers.
  536. every text-line include one number in ASCII-text format!
  537. (after the number can stand a remark)
  538. the following characters are part of a ASCII-text-number:  1234567890. -e
  539. examples:
  540.    24        ;this is a remark
  541.   3.14159  
  542. -0.75
  543.  1.2345e-12  =  1.2345*10^-12 = 0.0000000000000012345  <--remark
  544. -1.7e6       = -1.7000*10^6   = 1700000.0              <--remark
  545. 0
  546. -234567.7578 = remark too
  547.  
  548.  
  549.  
  550. Float - Format:   *.(F)
  551. ------------------------
  552. All files with the extension .(F) are Floatformat numbers,
  553. the Floatformat is a 4 byte long numeric format of the language C.
  554. DATAlength = filelength_in_bytes / 4 
  555.  
  556.  
  557.  
  558. Double - Format:   *.(D)
  559. -------------------------
  560. All files with the extension .(D) are Doubleformat numbers,
  561. the Doubleformat is a 8 byte long numeric format of the language C.
  562. (files with the extension .FFT use double format too, but *.FFT have a Header)
  563. DATAlength = filelength_in_bytes / 8
  564.  
  565. #48  exportiere nur Imaginär
  566.  
  567. Export (save) only the imaginarypart of complex DATA as Headerless numbers
  568. in 'Text' , 'Float' or 'Double' Format.
  569. Information like  time_area / frequency_Area, Samplerate, complex/reell,
  570. is not saved, and going lost!   only the raw DATA is saved.
  571. never use this function on reell DATA.
  572.  
  573. first select a Format: (Text, Float, Double), then all files of the chosen type
  574. in the FFT4WAVE directory are shown, enter a new filename without extension!
  575. Exportiert (speichert) nur den Imaginärteil von komplexen Daten als
  576. Headerlose Zahlen hintereinander, im 'Text' , 'Float' oder 'Double' Format.
  577.  
  578.  
  579.  
  580. Text - Format:   *.(T)
  581. -----------------------
  582. all files with the extension .(T) are Textformat numbers.
  583. every text-line include one number in ASCII-text format!
  584. (after the number can stand a remark)
  585. the following characters are part of a ASCII-text-number:  1234567890. -e
  586. examples:
  587.    24        ;this is a remark
  588.   3.14159  
  589. -0.75
  590.  1.2345e-12  =  1.2345*10^-12 = 0.0000000000000012345  <--remark
  591. -1.7e6       = -1.7000*10^6   = 1700000.0              <--remark
  592. 0
  593. -234567.7578 = remark too
  594.  
  595.  
  596.  
  597. Float - Format:   *.(F)
  598. ------------------------
  599. All files with the extension .(F) are Floatformat numbers,
  600. the Floatformat is a 4 byte long numeric format of the language C.
  601. DATAlength = filelength_in_bytes / 4 
  602.  
  603.  
  604.  
  605. Double - Format:   *.(D)
  606. -------------------------
  607. All files with the extension .(D) are Doubleformat numbers,
  608. the Doubleformat is a 8 byte long numeric format of the language C.
  609. (files with the extension .FFT use double format too, but *.FFT have a Header)
  610. DATAlength = filelength_in_bytes / 8
  611.  
  612. #37  Hilfe (Wichtig)
  613. use the mouse to see the full Text (scrolling).
  614.  
  615. you have full mouse controll of the Program,
  616. the left Mousekey mostly start functions,
  617. and the right Mousekey mostly give you Help for every Menu-function,
  618. 'F1' just do the same (read contextsensitve HELP).
  619.  
  620. the key 'Esc' break off functions, (inclusive Undo),
  621. nearly all functions allow to break off to the last moment before DATA change.
  622.  
  623. the word 'reell' mean that the DATA is not complex DATA !!!
  624.  
  625. the program is buffer orientated, the DATA is in the buffer.
  626. the buffer is the real[] array (realpart),and the imag[] array (imaginary part)
  627. (reell DATA is alternately in real[] & imag[] array saved.)
  628. the buffer have some headerinformation, like Samplerate (for scale/visualize),
  629. complex/reell DATA, DATA is time_area / frequency_area ... 
  630.  
  631. it is possible to save the graphic-screen in a Windows 3.0 Bitmap file,
  632. the uncompressed Bitmap-file work with Windows 3.1 too!
  633. press 'F9' or 'F10' key to save the screen, the black/white Bitmap
  634. need only  38k...98k  diskspace per picture,
  635. and the BILD_???.BMP files are numbered from 001 to 999.
  636.  
  637. the FFT4WAVE.INI file is important, and editable with every DOS-ASCII-EDITOR.
  638. it include the colorpalette, SETUP Information, and MENU structure.
  639. (the Help file 'FFT4WAVE.HLP' have the same structure but more easy)
  640. -------------------------------------------------------------------------------
  641. the FFT4WAVE.INI file beginns with 20 Colors,in 20 following lines,
  642. followed from remarks. the last 3 'Farben' (colors), are no colors:
  643.  
  644. 'Farbe 17' how many scanvalues (DATA) to read from a SOUND file...
  645. 'Farbe 18' Samplerate of unknown SOUND files formats (not WAV).
  646. 'Farbe 19' Beginnersmode/Professionalmode: Beginnersmode give more Information
  647.            in Graphicsmode, and a better cooler Textmodefont!
  648.  
  649. the following line is the Graphicsmode:
  650. 1 = 640x480,   2 = 800x600,   3 = 1024x768,
  651. default is 640x480 in 16 colors, change this entry only if your Graphiccard &
  652. Monitor support that SVGA-VESA-Mode, a VESA-driver can help you!
  653.  
  654. the following lines include the MENU-structure:
  655. maximum is 9 column * 24 lines, FFT4WAVE automaticly count column & lines. 
  656. Never use more than 9 column and 24 lines, to prevent systemcrashs!
  657. it is not important how many lines different column have.
  658. FFT4WAVE's default MENU structure use only 2 column for now...
  659. every column starts with the column-title, then follow the lines of the column.
  660. to select between line and column, a line starts with a '#'.
  661.  
  662. example:      ┌─────────────────────────────────────┐
  663.               │this is a column-title               │
  664.               │#FunctionsNumber  Functionsname      │
  665.               │#34               that is a line     │
  666.               │#9                schnell beenden!   │
  667.               │#19               beenden!           │
  668.               │Und jetzt kommt die nächste Spalte...│
  669.               │#11               record with 11kHz  │
  670.               │#8                Formel eingeben    │
  671.               └─────────────────────────────────────┘
  672.  
  673. the Functionsname is shown in the MENU,
  674. and the FunktionsNumber select what Function have to be executed.
  675.  
  676. this is very usefull to create language supports for other languages!
  677. and you only need a texteditor to do this, it is also possible to
  678. disable functions you dont need, over the MENU structure!
  679.  
  680. I'am very happy if you release other language supports of FFT4WAVE.
  681. you see how bad my english is...
  682. i have nothing against if you release better modifyed Versions of my program,
  683. this is why i include the full Borland_C sourcecode... 
  684. but dont forget to set my Name inside (and your Name too)!
  685.  
  686. Lars Otte  (DrCaos)
  687. #9   schnell Beenden!
  688. Exit FFT4WAVE without save the DATA!
  689. #19  Exit/Beenden! 
  690. SAVE all DATA in "TEMP.FFT" and exit FFT4WAVE.
  691. (FFT4WAVE loading "TEMP.FFT" automaticly at programstart!)
  692. #21  Eingabe mit Filtertyp Digital
  693.  
  694. Input of DATA with the mouse (the mouse draw lines and set dots).
  695.  
  696. missing scanvalues are interpolated with a digital Interpolation-Filter.
  697. this Filter just repeat the last given scanvalue for interpolation.
  698.  
  699.  
  700. after starting this function use the following keys:
  701. -----------------------------------------------------
  702. Esc               Undo, escape back to MENU!
  703. Del               clean screen, draw scale_units (DIV), mouse-input again
  704. Enter             accept all scanvalues , continue
  705. right Mousekey    accept all scanvalues , continue
  706. left  Mousekey    set dot, Line = hold mousekey and move the mouse
  707. F9                write screen in BILD_???.BMP file
  708. F10               like F9, but Farbe[2] (color) is dotted
  709. R                 show old       Realpart maximum_scaled in Farbe[3] (color)
  710. I                 show old  Imaginarypart maximum_scaled in Farbe[3] (color)
  711. B                 show old Real&Imag.part maximum_scaled in Farbe[3] (color)
  712.  
  713. after scanvalues given by mouse, and 'Enter' is pressed, missing scanvalues
  714. are interpolated, and the result of the interpolation is shown.
  715. you can press 'F9' or 'F10' to write the screen as a Windows 3.0 BMP-file.
  716.    (the BILD_???.BMP files are numbered automatically from 001 to 999)
  717.  
  718. now use the following keys:
  719. -----------------------------------------------
  720. Esc                 Undo, escape back to MENU!
  721. 1                   RC-smoothfilter strength 1
  722. 2                   RC-smoothfilter strength 2
  723. 3                   RC-smoothfilter strength 3
  724. 4                   RC-smoothfilter strength 4
  725. 5                   RC-smoothfilter strength 5
  726. 6                   RC-smoothfilter strength 6
  727. 7                   Symmetrical-smoothfilter strength 1
  728. 8                   Symmetrical-smoothfilter strength 2
  729. 9                   Symmetrical-smoothfilter strength 3
  730. 0                   Symmetrical-smoothfilter strength 4
  731. other keys          DC/OFFSET = 0, continue...
  732. left  mousekey      DC/OFFSET = 0, continue...
  733. right mousekey      Input of a Zero-level with the mouse, after that continue
  734.  
  735. Input of a Zero-level with the mouse:
  736. the Zero-level is given by a line between two points,
  737. have both points different height the Signal is rotating!
  738. press right mousekey to set the first point,
  739. and then move mouse and press again for the second point.
  740.  
  741. the Filters are 1.Order but if you filter the signal several times the
  742. order is adding. so bigger the strength of the smoothfilter,
  743. so lower is the cutoff frequency of the virtual lowpass.
  744.  
  745. after this FFT4WAVE want to know where to save the new signal,
  746. this is your last change for pressing 'Esc' (Undo-function).
  747. the signal can be saved as reell DATA,
  748. realpart of complex DATA, Imaginarypart of complex DATA.
  749.  
  750. #22  Eingabe mit Filtertyp Linear
  751.  
  752. Input of DATA with the mouse (the mouse draw lines and set dots).
  753.  
  754. missing scanvalues are interpolated with a linear Interpolation-Filter.
  755. this Filter connect given scanvalues with lines for interpolation.
  756.  
  757.  
  758. after starting this function use the following keys:
  759. -----------------------------------------------------
  760. Esc               Undo, escape back to MENU!
  761. Del               clean screen, draw scale_units (DIV), mouse-input again
  762. Enter             accept all scanvalues , continue
  763. right Mousekey    accept all scanvalues , continue
  764. left  Mousekey    set dot, Line = hold mousekey and move the mouse
  765. F9                write screen in BILD_???.BMP file
  766. F10               like F9, but Farbe[2] (color) is dotted
  767. R                 show old       Realpart maximum_scaled in Farbe[3] (color)
  768. I                 show old  Imaginarypart maximum_scaled in Farbe[3] (color)
  769. B                 show old Real&Imag.part maximum_scaled in Farbe[3] (color)
  770.  
  771. after scanvalues given by mouse, and 'Enter' is pressed, missing scanvalues
  772. are interpolated, and the result of the interpolation is shown.
  773. you can press 'F9' or 'F10' to write the screen as a Windows 3.0 BMP-file.
  774.    (the BILD_???.BMP files are numbered automatically from 001 to 999)
  775.  
  776. now use the following keys:
  777. -----------------------------------------------
  778. Esc                 Undo, escape back to MENU!
  779. 1                   RC-smoothfilter strength 1
  780. 2                   RC-smoothfilter strength 2
  781. 3                   RC-smoothfilter strength 3
  782. 4                   RC-smoothfilter strength 4
  783. 5                   RC-smoothfilter strength 5
  784. 6                   RC-smoothfilter strength 6
  785. 7                   Symmetrical-smoothfilter strength 1
  786. 8                   Symmetrical-smoothfilter strength 2
  787. 9                   Symmetrical-smoothfilter strength 3
  788. 0                   Symmetrical-smoothfilter strength 4
  789. other keys          DC/OFFSET = 0, continue...
  790. left  mousekey      DC/OFFSET = 0, continue...
  791. right mousekey      Input of a Zero-level with the mouse, after that continue
  792.  
  793. Input of a Zero-level with the mouse:
  794. the Zero-level is given by a line between two points,
  795. have both points different height the Signal is rotating!
  796. press right mousekey to set the first point,
  797. and then move mouse and press again for the second point.
  798.  
  799. the Filters are 1.Order but if you filter the signal several times the
  800. order is adding. so bigger the strength of the smoothfilter,
  801. so lower is the cutoff frequency of the virtual lowpass.
  802.  
  803. after this FFT4WAVE want to know where to save the new signal,
  804. this is your last change for pressing 'Esc' (Undo-function).
  805. the signal can be saved as reell DATA,
  806. realpart of complex DATA, Imaginarypart of complex DATA.
  807.  
  808. #23  Eingabe mit Filtertyp SIN-Treppe
  809.  
  810. Input of DATA with the mouse (the mouse draw lines and set dots).
  811.  
  812. missing scanvalues are interpolated with a SIN-step Interpolation-Filter.
  813. this Filter connect given scanvalues with half_sinus for interpolation.
  814.  
  815.  
  816. after starting this function use the following keys:
  817. -----------------------------------------------------
  818. Esc               Undo, escape back to MENU!
  819. Del               clean screen, draw scale_units (DIV), mouse-input again
  820. Enter             accept all scanvalues , continue
  821. right Mousekey    accept all scanvalues , continue
  822. left  Mousekey    set dot, Line = hold mousekey and move the mouse
  823. F9                write screen in BILD_???.BMP file
  824. F10               like F9, but Farbe[2] (color) is dotted
  825. R                 show old       Realpart maximum_scaled in Farbe[3] (color)
  826. I                 show old  Imaginarypart maximum_scaled in Farbe[3] (color)
  827. B                 show old Real&Imag.part maximum_scaled in Farbe[3] (color)
  828.  
  829. after scanvalues given by mouse, and 'Enter' is pressed, missing scanvalues
  830. are interpolated, and the result of the interpolation is shown.
  831. you can press 'F9' or 'F10' to write the screen as a Windows 3.0 BMP-file.
  832.    (the BILD_???.BMP files are numbered automatically from 001 to 999)
  833.  
  834. now use the following keys:
  835. -----------------------------------------------
  836. Esc                 Undo, escape back to MENU!
  837. 1                   RC-smoothfilter strength 1
  838. 2                   RC-smoothfilter strength 2
  839. 3                   RC-smoothfilter strength 3
  840. 4                   RC-smoothfilter strength 4
  841. 5                   RC-smoothfilter strength 5
  842. 6                   RC-smoothfilter strength 6
  843. 7                   Symmetrical-smoothfilter strength 1
  844. 8                   Symmetrical-smoothfilter strength 2
  845. 9                   Symmetrical-smoothfilter strength 3
  846. 0                   Symmetrical-smoothfilter strength 4
  847. other keys          DC/OFFSET = 0, continue...
  848. left  mousekey      DC/OFFSET = 0, continue...
  849. right mousekey      Input of a Zero-level with the mouse, after that continue
  850.  
  851. Input of a Zero-level with the mouse:
  852. the Zero-level is given by a line between two points,
  853. have both points different height the Signal is rotating!
  854. press right mousekey to set the first point,
  855. and then move mouse and press again for the second point.
  856.  
  857. the Filters are 1.Order but if you filter the signal several times the
  858. order is adding. so bigger the strength of the smoothfilter,
  859. so lower is the cutoff frequency of the virtual lowpass.
  860.  
  861. after this FFT4WAVE want to know where to save the new signal,
  862. this is your last change for pressing 'Esc' (Undo-function).
  863. the signal can be saved as reell DATA,
  864. realpart of complex DATA, Imaginarypart of complex DATA.
  865.  
  866. #24  Eingabe mit Filtertyp Spezial
  867.  
  868. Input of DATA with the mouse (the mouse draw lines and set dots).
  869.  
  870. missing scanvalues are interpolated with a Spezial Interpolation-Filter.
  871. this Filter does a gauss lowpass interpolation, many dots give good results.
  872. the Spline-Order at interpolated scanvalues is 1+2 (Line+lowpass).
  873.  
  874.  
  875. after starting this function use the following keys:
  876. -----------------------------------------------------
  877. Esc               Undo, escape back to MENU!
  878. Del               clean screen, draw scale_units (DIV), mouse-input again
  879. Enter             accept all scanvalues , continue
  880. right Mousekey    accept all scanvalues , continue
  881. left  Mousekey    set dot, Line = hold mousekey and move the mouse
  882. F9                write screen in BILD_???.BMP file
  883. F10               like F9, but Farbe[2] (color) is dotted
  884. R                 show old       Realpart maximum_scaled in Farbe[3] (color)
  885. I                 show old  Imaginarypart maximum_scaled in Farbe[3] (color)
  886. B                 show old Real&Imag.part maximum_scaled in Farbe[3] (color)
  887.  
  888. after scanvalues given by mouse, and 'Enter' is pressed, missing scanvalues
  889. are interpolated, and the result of the interpolation is shown.
  890. you can press 'F9' or 'F10' to write the screen as a Windows 3.0 BMP-file.
  891.    (the BILD_???.BMP files are numbered automatically from 001 to 999)
  892.  
  893. now use the following keys:
  894. -----------------------------------------------
  895. Esc                 Undo, escape back to MENU!
  896. 1                   RC-smoothfilter strength 1
  897. 2                   RC-smoothfilter strength 2
  898. 3                   RC-smoothfilter strength 3
  899. 4                   RC-smoothfilter strength 4
  900. 5                   RC-smoothfilter strength 5
  901. 6                   RC-smoothfilter strength 6
  902. 7                   Symmetrical-smoothfilter strength 1
  903. 8                   Symmetrical-smoothfilter strength 2
  904. 9                   Symmetrical-smoothfilter strength 3
  905. 0                   Symmetrical-smoothfilter strength 4
  906. other keys          DC/OFFSET = 0, continue...
  907. left  mousekey      DC/OFFSET = 0, continue...
  908. right mousekey      Input of a Zero-level with the mouse, after that continue
  909.  
  910. Input of a Zero-level with the mouse:
  911. the Zero-level is given by a line between two points,
  912. have both points different height the Signal is rotating!
  913. press right mousekey to set the first point,
  914. and then move mouse and press again for the second point.
  915.  
  916. the Filters are 1.Order but if you filter the signal several times the
  917. order is adding. so bigger the strength of the smoothfilter,
  918. so lower is the cutoff frequency of the virtual lowpass.
  919.  
  920. after this FFT4WAVE want to know where to save the new signal,
  921. this is your last change for pressing 'Esc' (Undo-function).
  922. the signal can be saved as reell DATA,
  923. realpart of complex DATA, Imaginarypart of complex DATA.
  924.  
  925. #31  Status-Information anzeigen
  926. shows all Status-Information of the DATA in memory!
  927. #32  Zeitb. <==vertauschen==> Freq.
  928.  
  929. swap FFTflag, the DATA self not change, but the Status:
  930. DATA is time area / DATA is frequency area     swap!
  931. that is usefull, if You import DATA, or input DATA with mouse,
  932. (FFT4WAVE think that the Status of DATA is time area)
  933. but You want that the Status of DATA is freqency area!
  934.  
  935. #33  ändere Abtastrate / Samplerate
  936.  
  937. change the Samplerate (scanvalues per second).
  938. Nyquist criterion:  cutoff_frequency = Samplerate / 2
  939. Functions like FFT of reell DATA, cutting inside the Visualize,
  940. and Oversampling linear/Filter     correct the Samplerate too! 
  941.  
  942. #36  ändere die Gesamtdauer
  943.  
  944. change the fulltime / whole_duration of the DATA!
  945. it change the Samplerate = DATAlength (how many scanvalues) / whole_duration
  946. Functions like FFT of reell DATA, cutting inside the Visualize,
  947. and Oversampling linear/Filter     correct the Samplerate too! 
  948.  
  949. #34  ändere Gitter_X / DIV Dauer
  950.  
  951. change the duration of a X_scale_unit (DIV) of an 'Input with Filter ??????'
  952. it change the Samplerate = DATAlength (how many scanvalues) / (16*DIV_Time)
  953. Functions like FFT of reell DATA, cutting inside the Visualize,
  954. and Oversampling linear/Filter     correct the Samplerate too! 
  955.  
  956. #35  ändere Gitter_Y / DIV Amplitude
  957.  
  958. change the height of a Y_scale_unit (DIV) of an 'Input with Filter ??????'
  959. It is important to change the height before You input the DATA,
  960. because it work only on the following 'Input with Filter ??????'
  961.  
  962. #52  Y-Scalierung und Information
  963.  
  964. this Function shows how often a Amplitude exist in the DATA,
  965. so it is very easy to see clipping or overdriven DATA...
  966. It shows the amplitude of the biggest scanvalue, and use it for scaling.
  967. the difference between the biggest ±values (Peak to Peak), is shown too!
  968.  
  969. DC/Offset is calculated and shown,
  970. nearly all Soundcards cut very low freqencys <20Hz and DC with a highpass,
  971. but most Soundcards have an offset-error, so that the DC/Offset shows the
  972. offset-error of the Soundcard...
  973.  
  974. use key  'F9'  or  'F10'  for printing as BMP-file.
  975.  
  976. now you have the following possibilitys:
  977. -----------------------------------------
  978. with the key 'Esc' or the field 'STOP!' You escape to MENU!
  979. the fields  'New Amplitude ?' ; 'Real & Imag.' ; 'only Real' and 'only Imag.'
  980. allow it to scale the Amplitude (Y) of the DATA to a new value.
  981.  
  982. 'New Amplitude ?'    scale reell DATA.
  983. 'Real & Imag.'       scale complex DATA      to one Amplitude.
  984. 'only Real.'         scale only the real     part of the DATA.
  985. 'only Imag.'         scale only the imaginarypart of the DATA.
  986.  
  987. It is very important, if You click with right or left MouseKEY on the field!
  988. clicking with the right mousekey eliminate the DC/Offset before scale.
  989.  
  990. #53  X-Scalierung (Oversampling)
  991.            X-Scaling have 3 subfunctions:
  992.           ════════════════════════════════
  993.  
  994. 'Impossiblity Drive'    'Oversampling Linear'    'Oversampling Filter'
  995.  
  996. Impossibilty Drive:
  997. --------------------
  998. waiting for the input of a new DATAlength, or the input of a Multiplyfactor.
  999. is the value is not logic, the Function break off.
  1000. all DATA-formats are supported!
  1001.  
  1002. If the input value is small, then it is a Multiply factor, the DATA is repeate
  1003. by Multiplyfactor. the whole_duration is multiplyed too...
  1004.  
  1005. If the input is a DATAlength, the DATA is filled up to the new DATAlength,
  1006. with the last existing value. That can produce a DC-Offset...
  1007.  
  1008.  
  1009.  
  1010. Oversampling Linear:
  1011. ---------------------
  1012. all DATA-formats are supported!
  1013. waiting for the input of a new DATAlength, then the DATA is stretched
  1014. to the new DATAlength (with linear interpolation resampling).
  1015. the physical in Visualize used scaling dont change, but the DATAlength does...
  1016. that mean DATAlength is something like resolution/precision.
  1017. If the new DATAlength > old DATAlegth then this is oversampling.
  1018. this reduce alising danger, but not the recording-alising.
  1019.  
  1020.  
  1021.  
  1022. Oversampling Filter:
  1023. ---------------------
  1024. only reell DATA-format supported!
  1025. waiting for the input of a new DATAlength, then the DATA is stretched to the
  1026. new DATAlength. the physical in Visualize used scaling dont change,
  1027. but the DATAlength does...
  1028. that mean DATAlength is something like resolution/precision.
  1029. If the new DATAlength > old DATAlegth then this is oversampling.
  1030. this reduce alising danger, but not the recording-alising.
  1031. the Interpolation is done with a Filter, possible Filter-files have the
  1032. extension  *_.FFT     .our DATA is folding with Filter, it is a spezial Folding
  1033. called "Wild Diskrete Folding" (WDF). This folding-method allow to fold very
  1034. fast, reell diskrete DATA with different DATAlength and different Samplerate
  1035. to a new DATAlength. without amplitude-ERROR problems...
  1036.  
  1037. Das ganze beruht auf der verallgemeinerten Abtastreihe (VAR), und
  1038. der Filter repäsentiert einen 'Kern für verallgemeinerte Abtastreihen' (KVAR)
  1039.  
  1040.                         Filter(t)  =  KVAR(πt)
  1041.  
  1042. Da es sich bei dem Filter (KVAR) um eine gerade Funktion handelt, wird nur
  1043. die zweite (positive) Hälfte des Filters gelesen, und um den Faktor 2 linear
  1044. interpoliert. Jetzt wird der Filter so angesprochen: y = Filter( abs(t) )
  1045. Dieses Filter hat eine virtuelle Datenlänge von 32768.
  1046.  
  1047. #56  Nullpunktvertauschung_X
  1048.  
  1049. swapping the first half of the DATA with the second half of the DATA.
  1050. doing this twice give again the orginal state of the DATA. (like the FFT)
  1051.  
  1052. that Question is, for what is this good?
  1053. -----------------------------------------
  1054. the FFT Algorithm induce, a with the DATAlength periodic repeat, of our DATA,
  1055. in time area and in frequency area...
  1056. we conclude that in X-direction Zero is at left border ( = 0 ),
  1057. and Zero is at right border ( = Samplerate, whole_duration) too,
  1058. because the DATA are periodic with Samplerate or whole_duration.
  1059.  
  1060. the result of swapping the DATA is, like if Zero now in the middle of the DATA.
  1061. and so we get a for us more 'normal' state of the DATA.
  1062. Swapping from our 'normal'state of DATA bring us back to the FFT-State of DATA.
  1063.  
  1064. all DATA-formats are supported, but it is useless to do this with complex DATA,
  1065. produced over FFT of reell DATA. because the upper of the symmetrical half is
  1066. cutted to use memory more effective.
  1067.  
  1068. #30  umwandeln:  Polar => Real,Imag.
  1069.  
  1070. transformation of polar complex DATA in real & imaginary complex DATA
  1071. ----------------------------------------------------------------------
  1072. the magnitude of the polar complex DATA is given in real part,
  1073. and the angle of the polar complex DATA is given in imaginary part.
  1074. range of angle must be 0...360°, or -180°...180°
  1075.  
  1076. this function transform the magnitude and angle given in the real & imag. part
  1077. in the normal complex DATA format that FFT4WAVE use...
  1078.  
  1079. #55  Absoluter Fehler: MEMORY - Datei.FFT
  1080.  
  1081. calculate the Difference between the DATA in MEMORY,
  1082. and the DATA given in the selected *.FFT file.
  1083.  
  1084. DATAlength must be the same, and DATAtype (reell/complex) must be the same.
  1085. Samplerate and Status of DATA can be different, FFT4WAVE warn you then,
  1086. because sometimes it make no sense, if it is different...
  1087.  
  1088. If the DATA in the *.FFT file are the correct DATA, then the difference
  1089. between MEMORY - FILE is the  absolute ERROR!
  1090.  
  1091. #60  complexe Faltung: MEMORY * Datei.FFT
  1092.  
  1093. folding the DATA in MEMORY with the DATA given in the selected *.FFT file.
  1094. --------------------------------------------------------------------------
  1095. DATAlength must be the same, and both DATAtypes must be complex DATA.
  1096. Samplerate and Status of DATA can be different, FFT4WAVE warn you then,
  1097. because sometimes it make no sense, if it is different...
  1098.  
  1099. this folding is a FFT based folding, so the DATA is periodic repeat with the
  1100. DATAlength. the result of this is, that amplitude_correction_faktors are need.
  1101. different Signaltypes like dirac, cos, single pulses, ... need different
  1102. amplitude_correction_faktors, this is not easy to solve, it is impossible!
  1103. the form of the Signal is okay, but don't forget the border effect.
  1104. are both Samplerates identical, then the X-scaling is okay too.
  1105.  
  1106.  
  1107. this folding is not good for Mathematics, but is usefull as Universal-Filter:
  1108.  
  1109. g(t) = s(t) * h(t)
  1110.  
  1111. s(t) is our complex input-signal in time_area.
  1112. g(t) is our complex outputsignal im time_area.
  1113. h(t) is the inverse FFT of the Filterform in frequency_area.
  1114.  
  1115. #54  Hanning Fenster
  1116.  
  1117. all DATA-formats are supported, all DATA is multiplicate with a Hanning Window
  1118. doing this can be usefull, before you do the FFT...
  1119.  
  1120. DATA(t) = DATA(t) ∙ ( 0.5 - 0.5 ∙ cos(2πt/T) )
  1121.  
  1122. now amplitude goes to zero at left & right border of the DATA.
  1123. that prevents jumps in the Signal, by the periodic repeat, given by the FFT.
  1124. now the DATAlength must not be longer a multiply of the DATA_period.
  1125.  
  1126. the signal_form of the FFT is now okay, but we have again a unknown
  1127. amplitude_correction_factor...
  1128.  
  1129. #51  Visualisierung
  1130.  
  1131. this Function is for visualize the DATA, and for printing and cutting.
  1132. it is possible to reduce the DATAlength on the zoom-window, it is possible to
  1133. cut the zoom-window out of the DATA. the rest is then away forever!
  1134.  
  1135. In the left upper corner we can see the exact X/Y values of the cursor.
  1136. It is possible to set a new zero at cursor-position, with the keys  'S' 'X' 'Y'
  1137. to scan length differences, a delta before the value show you, that a new zero
  1138. is set.    use the key 'N' or 'Z' to set zero to normal state back.
  1139.  
  1140.  
  1141. use the following keys:
  1142. -------------------------------------------------------------------------------
  1143. F1               shows active keys  (Quick Help)
  1144. F9               write screen in BILD_???.BMP file, (Windows 3.0 Graphicformat)
  1145. F10              write screen in BILD_???.BMP file, Farbe[2] (color) is dotted.
  1146. <--              cutting the actually zoom-window from DATA,and then break off.
  1147. Esc              Escape visualize (break off).
  1148. S                Set new Zero for X and Y
  1149. X                Set new Zero for X-direction
  1150. Y                Set new Zero for Y-direction
  1151. N                Set normal Zero
  1152. Z                Set normal Zero
  1153. +                Amplitude 'Zoom in'    (zoom-window in Y-direction bigger)
  1154. -                Amplitude 'Zoom out'   (zoom-window in Y-direction smaller)
  1155. left  Mousekey   'Zoom in' set upper left corner of the new zoom-window, press
  1156.                  this key again set lower right corner of new zoom-window,
  1157.                  if you press some else key, 'Zoom in' is break off!
  1158. right Mousekey   'Zoom out', make zoom-window   factor 3  bigger.
  1159.  
  1160.  
  1161. the following keys work only with complex DATA:
  1162. -------------------------------------------------------------------
  1163. A                Amplitude (magnitude)
  1164. L                20 * log10(magnitude)
  1165. P                show Polar complex DATA, magnitude and angle.
  1166. R                show only Realpart
  1167. I                show only Imaginarypart
  1168. B                show both Realpart and Imaginarypart (splitscreen)
  1169.  
  1170. #50  FFT / inverse FFT
  1171. Fast Fourier Transformation:
  1172. ----------------------------
  1173. this function do the FFT or the inverse_FFT of the DATA,
  1174. time_area = FFT, frequency_area = inverse_FFT.
  1175.  
  1176. the FFT Algorithm induce, a with the DATAlength periodic repeat,
  1177.  of our DATA, in time area and in frequency area...
  1178. our DATA is periodic repeat with Samplerate or whole_duration.
  1179. Periodicwidth_frequency_area = DATAlength / Periodicwidth_time_area
  1180. this bring us problems, if we want the FFT of a single impulse,
  1181. but we get only the FFT of a continuous impulse !
  1182. exactly: we get the fft, of a single impulse fold with continuous diracpulse
  1183. of the pulsewidth 'whole duration' and the weight (1).
  1184. the FFT of a continuous diracpulse of the pulswidth 'whole duration' have
  1185. the amplitudefactor 1/whole_duration.
  1186. to get the correct amplitude of the FFT of a single impluse, we must multiply
  1187. the result with the amplitude_correction_factor 'whole duration'. 
  1188.  
  1189.  ╔═════════════╗                           ╔═════════════╗
  1190.  ║─┐         ┌─║           ┌───┐         ┌─║─┐         ┌─║─┐         ┌───┐
  1191.  ║ │         │ ║     ....  │   │         │ ║ │         │ ║ │         │   │ ....
  1192.  ║ └─────────┘ ║         ──┘   └─────────┘ ║ └─────────┘ ║ └─────────┘   └─
  1193.  ╚═════════════╝                           ╚═════════════╝
  1194.  2 short Impulse                       continuous long Impulse
  1195.  
  1196. it existing two different FFT/inverseFFT algorithm,
  1197. the FFT/inverseFFT of complex DATA, and the FFT/inverseFFT of reell DATA.
  1198. the FFT/inverseFFT of complex DATA is better because the inverse FFT work
  1199. perfect, the inverse FFT of FFT of reell DATA not work always perfect.
  1200. but the FFT of reell DATA use the memory more efficient!
  1201. the FFT of  reell  DATA give back 0...Samplerate/2,
  1202. the FFT of complex DATA give back 0...Samplerate.
  1203. the DATA of 0...Samplerate/2 is a mirror of Samplerate/2...Samplerate.
  1204.  
  1205.             0...Samplerate/2 =  0...Nyquist_freqency
  1206.  Samplerate/2...Samplerate   = -Nyquist_freqency...0
  1207.  
  1208. 0 and Samplerate  = zero in x-direction. use 'Zero_swapping_shifting_X'
  1209. if you want one Zero in the middle of the DATA...
  1210. the FFT/inverseFFT work not with every DATAlength, it is often usefull,
  1211. to use Oversampling to a better DATAlegth, to prevent a systemcrash !!!
  1212. it can also be usefull to use 'Hannig Window' before you do the FFT.
  1213.  
  1214. Lars Otte, 
  1215.           Autor of FFT4WAVE
  1216.  
  1217.  
  1218. ------------------------------------------------------------------------------
  1219. THIS PROGRAM CALCULATES THE FAST FOURIER TRANSFORM OF VERY LONG SERIES,
  1220. AS LONG AS YOUR FAR HEAP ALLOWS. FOR EXAMPLE, USING DOUBLE PRECISION IT
  1221. IS POSIBLE TO PROCESS 70.000 REAL DATA POINTS. IT IMPLEMENTS R. C.
  1222. SINGLETON'S MIXED RADIX FAST FOURIER ALGORITHM. SOME FEATURES OF THIS
  1223. ALGORITHM ARE: 1) THE LENGTH OF THE SERIES DOES NOT HAVE TO BE BE
  1224. NECESSARILY A POWER OF TWO, THE LENGTH MAY INCLUDE FACTORS OF 2 AND 4,
  1225. AND ALSO ODD FACTORS AS 3,5,7, ETC,2-) TO AVOID TRUNCATION ERRORS, THE
  1226. SINES AND COSINES ARE GENERATED RECURSIVELY, 3-) THE DATA AND ITS
  1227. TRANSFORM ARE ACCESSED WITH HUGE POINTERS.
  1228.  
  1229.  
  1230. DATA SIZE RESTRICTION:
  1231.  
  1232. The series has to fit in conventional memory (ie. far heap). Using
  1233. double precision it means somewhere around 70.000 real data points
  1234. (547 K bytes), depending on your system configuration.
  1235.  
  1236.   
  1237. TRUNCATION ERRORS ARE A BIG PROBLEM:
  1238.  
  1239. First I used two FFT subroutines found in SYMTEL and modified them
  1240. using huge pointers to access the data. Everything worked fine until
  1241. I started transforming series 12K long and above. It took me a while
  1242. to figure out the problem was in the truncation errors when calculating
  1243. the sines and cosines using the library functions.
  1244.  
  1245. METHOD:
  1246.  
  1247. I translated to C, R. C. Singleton's mixed radix fast Fourier transform
  1248. algorithm (see reference in SING.C). His algorithm generates the 
  1249. sines and cosines recursively and corrects for truncation errors.
  1250.  
  1251. DATA LENGTH
  1252.  
  1253. Does not have to be a power of 2 necessarily. The length can contain
  1254. even factors as 2 and 4, and also odd factors as 3,5, 7, 11, etc.
  1255. The algorithm is most efficient if the length is a power of four.
  1256. Data lengths with odd factors of 3 and 5 can be used without a great
  1257. loss in performance.
  1258.  
  1259.  
  1260.     This functions are translations from the fortran program in
  1261.     R. C. Singleton, An algorithm for computing the mixed radix fast
  1262.     Fourier transform 
  1263.   
  1264.     IEEE Trans. Audio Electroacoust., vol. AU-17, pp. 93-10, June 1969.
  1265.  
  1266. **************************************************************
  1267. *  Javier Soley, Ph. D,   FJSOLEY @UCRVM2.BITNET             *
  1268. *  Escuela de Física y Centro de Investigaciones Geofísicas  *
  1269. *  Universidad de Costa Rica                                 *
  1270. **************************************************************